當使用者透過 瀏覽器、App 或 API Client(如 Postman) 按下任何會導致網頁跳轉或資料傳輸的操作時,就會發送一個 HTTP 請求(Request)。
這個請求會經由 HTTP 或 HTTPS 協定 傳輸,並在過程中透過 DNS 將網址解析為實際的 IP 位址,以便找到對應的伺服器。
HTTP(HyperText Transfer Protocol)超文本傳輸協定 是一種讓用戶端與伺服器之間進行通訊的協定。
當網際網路開始流行時,需要一套標準格式來傳輸資料。就像郵件需要寄件人與收件人資訊一樣,HTTP 也必須定義明確的資料格式,以利伺服器正確處理請求與回應。
HTTP Request 一般包含兩個主要部分:
這裡包含與請求相關的元資料,常見欄位有:
當使用 POST、PUT 等方法時,Request Body 才會被使用。
HTTPS = HTTP + SSL/TLS 加密層
相較於 HTTP,HTTPS 提供了資料加密與傳輸安全性,防止資料在傳輸過程中被竊聽或竄改。
項目 | HTTP | HTTPS |
---|---|---|
基礎協定 | TCP/IP | TCP/IP + SSL/TLS |
資料是否加密 | 無加密 | 傳輸前加密 |
安全性 | 低 | 高(可防止竊聽、中間人攻擊) |
常見用途 | 測試、內網、開發 | 正式環境、登入、金流、API 請求等 |
Client → Server: 傳送 SYN 封包,請求建立連線,並附帶初始序列號。
Server → Client: 回傳 SYN-ACK,表示收到並同意建立連線。
Client → Server: 傳送 ACK 確認封包,連線正式建立。
Client 發起握手請求,並提供支援的加密演算法。
Server 回傳憑證(通常包含公鑰),以及選定的加密演算法。
Client 驗證憑證,產生 session key,並用 Server 公鑰加密送出。
Server 使用私鑰解密 session key。
之後雙方使用對稱加密開始安全通訊。